package com.bjsxt.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bjsxt.controller.UnSetPasswordParam;
import com.bjsxt.domain.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bjsxt.dto.UserDto;
import com.bjsxt.model.*;

import java.util.List;
import java.util.Map;

public interface UserService extends IService<User>{

    /**
     * 条件分页查询用户列表
     * @param page
     * @param mobile
     * @param userId
     * @param userName
     * @param realName
     * @param status
     * @return
     */

    Page<User> findByPage(Page<User> page, String mobile, Long userId, String userName, String realName, Integer status,Integer reviewStatus);

    /**
     * 通过用户id查询 用户邀请的人员
     * @param page
     * @param userId
     * @return
     */
    Page<User> findDirectInvitePage(Page<User> page, Long userId);

    void updateUserAuthStatus(Long id, Byte authStatus, Long authCode, String remark);

    boolean identifyVerfiy(Long id, UserAuthForm userAuthForm);

    void authUser(Long valueOf, List<String> asList);

    boolean updatePhone(Long valueOf, UpdatePhoneParam updatePhoneParam);

    boolean checkNewPhone(String mobile, String countryCode);

    /**
     * 修改用户的登录密码
     *
     * @param userId           用户的ID
     * @param updateLoginParam 修改密码的表单参数
     * @return
     */
    boolean updateUserLoginPwd(Long userId, UpdateLoginParam updateLoginParam);

    /**
     * 修改用户的交易密码
     *
     * @param userId           用户的Id
     * @param updateLoginParam 修改交易密码的表单参数
     * @return
     */
    boolean updateUserPayPwd(Long userId, UpdateLoginParam updateLoginParam);

    /**
     * 重置用户的支付密码
     *
     * @param userId                用户的Id
     * @param unsetPayPasswordParam 重置的表单参数
     * @return 是否重置成功
     */
    boolean unsetPayPassword(Long userId, UnsetPayPasswordParam unsetPayPasswordParam);

    /**
     * 获取该用户邀请的用户列表
     *
     * @param userId 用户的Id
     * @return
     */
    List<User> getUserInvites(Long userId);

    /**
     * 通过用户的Id 批量查询用户的基础信息
     *
     * @param ids
     * @return
     */
//    List<UserDto> getBasicUsers(List<Long> ids);
   // Map<Long, UserDto> getBasicUsers(List<Long> ids, String userName, String mobile);

    /**
     * 用户的注册
     *
     * @param registerParam 注册的表单参数
     * @return
     */
    boolean register(RegisterParam registerParam);

    /**
     * 重置登陆密码
     *
     * @param unSetPasswordParam
     * @return
     */
    boolean unsetLoginPwd(UnSetPasswordParam unSetPasswordParam);



    Map<Long,UserDto> getBasicUsers(List<Long> ids, String username, String mobile);
}
